﻿using System;
using Company.BLL;
using Company.BLL.KDT.SXXK;
using Company.BLL.Utils;
using Company.BLL.DuLieuChuan;

namespace Company.Interface.KDT.SXXK
{
    public partial class SanPhamEditForm : BaseForm
    {        
        public SanPham SPDetail;
        public SanPhamCollection SPCollection;
        public SanPhamDangKy spDangKy;
        public SanPhamEditForm()
        {
            InitializeComponent();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            if(this.OpenType == OpenFormType.Insert)
                this.SPDetail = null;
            this.Close();
        }
        private bool checkSPExit(string maSP)
        {
            foreach (SanPham sp in SPCollection)
            {
                if (sp.Ma == maSP) return true;
            }
            return false;
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            cvError.Validate();
            // Kiểm tra tính hợp lệ của mã HS.
            if (!MaHS.Validate(txtMaHS.Text, 10))
            {
                error.SetIconPadding(txtMaHS, -8);
                error.SetError(txtMaHS, "Mã số HS không hợp lệ.");
                return;
            }

            if (!cvError.IsValid) return;
            if (checkSPExit(txtMa.Text.Trim()))
            {
                ShowMessage("Sản phẩm này đã được khai báo trên lưới.", false);
                return;
            }
            if (SanPham.checkNPLExit(txtMa.Text.Trim(),spDangKy.ID))
            {
                ShowMessage("Sản phẩm này đã được khai báo trong danh sách khác.", false);
                return;
            }
            if (this.OpenType == OpenFormType.Insert)
            {
                // Kiểm tra xem SP(SXXK) đã tồn tại hay chưa?
                BLL.SXXK.SanPham spSXXK = new BLL.SXXK.SanPham();
                spSXXK.MaDoanhNghiep = this.MaDoanhNghiep;
                spSXXK.MaHaiQuan = this.MaHaiQuan;
                spSXXK.Ma = txtMa.Text.Trim();
                if (spSXXK.Load())
                {
                    ShowMessage("Sản phẩm này đã được đăng ký.", false);
                    return;
                }

                this.SPDetail = new SanPham();
                this.SPDetail.Ma = txtMa.Text;
                this.SPDetail.Ten = txtTen.Text;
                this.SPDetail.MaHS = txtMaHS.Text;
                this.SPDetail.DVT_ID = cbDonViTinh.SelectedValue.ToString();
            }
            else if (this.OpenType == OpenFormType.Edit)
            {
                // Kiểm tra xem SP(SXXK) đã tồn tại hay chưa?
                BLL.SXXK.SanPham spSXXK = new BLL.SXXK.SanPham();
                spSXXK.MaDoanhNghiep = this.MaDoanhNghiep;
                spSXXK.MaHaiQuan = this.MaHaiQuan;
                spSXXK.Ma = txtMa.Text.Trim();
                if (spSXXK.Load())
                {
                    ShowMessage("Sản phẩm này đã được đăng ký.", false);
                    return;
                }
                this.SPDetail.Ma = txtMa.Text;
                this.SPDetail.Ten = txtTen.Text;
                this.SPDetail.MaHS = txtMaHS.Text;
                this.SPDetail.DVT_ID = cbDonViTinh.SelectedValue.ToString();
                if (this.SPDetail.ID > 0)
                {
                    this.SPDetail.Update();
                }
            }
            this.Close();
        }

        private void SanPhamEditForm_Load(object sender, EventArgs e)
        {
            txtMa.Focus();
            this._DonViTinh = DonViTinh.SelectAll();
            cbDonViTinh.DataSource = this._DonViTinh;
            cbDonViTinh.DisplayMember = "Ten";
            cbDonViTinh.ValueMember = "ID";
            cbDonViTinh.SelectedValue = GlobalSettings.DVT_MAC_DINH;
            
            if (this.OpenType == OpenFormType.Insert)
            {
                cbDonViTinh.SelectedValue = GlobalSettings.DVT_MAC_DINH;
            }
            else if (this.OpenType == OpenFormType.Edit)
            {
                if (this.SPDetail != null)
                {
                    txtMa.Text = this.SPDetail.Ma;
                    txtTen.Text = this.SPDetail.Ten;
                    txtMaHS.Text = this.SPDetail.MaHS;
                    cbDonViTinh.SelectedValue = this.SPDetail.DVT_ID;
                }
            }
        }

        private void txtMaHS_Leave(object sender, EventArgs e)
        {
            if (!MaHS.Validate(txtMaHS.Text, 10))
            {
                error.SetIconPadding(txtMaHS, -8);
                error.SetError(txtMaHS, "Mã số HS không hợp lệ.");
            }
            else
            {
                error.SetError(txtMaHS, string.Empty);
            }
        }
    }
}